Passive user-generated coupon submission

ABSTRACT

Successful application of a coupon code on an e-commerce website is detected via network request tracking and page data tracking. Upon coupon application, the coupon code is stored, for example in a server-based database. The coupon code is then automatically applied to subsequent e-commerce purchases whose parameters match the requirements for the coupon. The coupon can be automatically applied to purchases made by the same user and/or other users, as applicable.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims the benefit of U.S. ProvisionalApplication Ser. No. 62/462,629 for “Passive User-Generated CouponSubmission” (Attorney Docket No. IMP008-PROV), filed Feb. 23, 2017,which is incorporated by reference herein in its entirety.

The present application claims the benefit of U.S. ProvisionalApplication Ser. No. 62/462,521 for “Product-Based Simultaneous CouponTesting” (Attorney Docket No. IMP007-PROV), filed Feb. 23, 2017, whichis incorporated by reference herein in its entirety.

The present application claims priority as a continuation-in-part ofU.S. Utility application Ser. No. 15/677,951 for “Automated Testing ofMultiple Online Coupons,” filed Aug. 15, 2017 (Atty. Docket No. IMP005),which is incorporated by reference herein in its entirety.

U.S. Utility application Ser. No. 15/677,951 claims the benefit of U.S.Provisional Application Ser. No. 62/376,243 for “Automated Testing ofMultiple Online Coupons” (Attorney Docket No. IMP005-PROV), filed Aug.17, 2016, which is incorporated by reference herein in its entirety.

U.S. Utility application Ser. No. 15/677,951 claims the benefit of U.S.Provisional Application Ser. No. 62/462,521 for “Product-BasedSimultaneous Coupon Testing” (Attorney Docket No. IMP007-PROV), filedFeb. 23, 2017, which is incorporated by reference herein in itsentirety.

U.S. Utility application Ser. No. 15/677,951 claims priority as acontinuation-in-part of U.S. Utility application Ser. No. 14/933,173 for“Universal Electronic Shopping Cart,” filed Nov. 5, 2015 (Atty. DocketNo. IMP001), which is incorporated by reference herein in its entirety.

U.S. Utility application Ser. No. 14/933,173 claims the benefit of U.S.Provisional Application Ser. No. 62/075,903 for “Universal E-ShoppingCart” (Attorney Docket No. IMP001-PROV), filed Nov. 6, 2014, which isincorporated by reference herein in its entirety.

U.S. Utility application Ser. No. 14/933,173 further claims the benefitof U.S. Provisional Application Ser. No. 62/174,846 for “UniversalE-Shopping Cart Enhancements” (Attorney Docket No. IMP002-PROV), filedJun. 12, 2015, which is incorporated by reference herein in itsentirety.

U.S. Utility application Ser. No. 14/933,173 further claims the benefitof U.S. Provisional Application Ser. No. 62/238,565 for “BrowserlessExtraction of Data from Web Pages” (Attorney Docket No. IMP003-PROV),filed Oct. 7, 2015, which is incorporated by reference herein in itsentirety.

U.S. Utility application Ser. No. 14/933,173 further claims the benefitof U.S. Provisional Application Ser. No. 62/238,574 for “AutomatedBrowserless Sequential Site Navigation” (Attorney Docket No.IMP004-PROV), filed Oct. 7, 2015, which is incorporated by referenceherein in its entirety.

TECHNICAL FIELD

The present document relates to techniques for automatically storingcoupon codes based on successful activation, and for automaticallyapplying stored coupon codes for subsequent purchases across users.

DESCRIPTION OF THE RELATED ART

Online shoppers are often interested in finding coupon codes andpromotional codes that will maximize their savings on online purchases.Such coupon codes can typically be found at a number of differentwebsites and are available from a number of different sources, causingdiligent shoppers to have to search for such coupons in many places.Often, some coupons may be invalid or may have expired before use, ormay have restrictions preventing their use for a particular purchase.Seeking out coupons from various sources, testing such coupons on aparticular order, and keeping track of which coupons are valid andusable, can be cumbersome and unreliable. As a result, many users failto obtain the best prices on items they purchase online.

SUMMARY

According to various embodiments, successful application of a couponcode is detected via network request tracking and page data tracking.Upon coupon application, the coupon code is stored, either locally or ina server-based database. The coupon code is then automatically appliedto subsequent ecommerce purchases whose parameters match therequirements for the coupon. The coupon can be automatically applied topurchases made by the same user and/or other users, as applicable.

The described techniques can be used in the context of a universalelectronic shopping cart, as described in the above-referenced U.S.Utility application Ser. No. 14/933,173, so as to store and/or applycoupons in connection with purchases made using the universal cart.Alternatively, the described techniques can be implemented in othercontexts.

Further details and variations are described herein.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, together with the description, illustrateseveral embodiments. One skilled in the art will recognize that theparticular embodiments illustrated in the drawings are merely exemplary,and are not intended to limit scope.

FIG. 1 is a block diagram depicting a system for automatically storingcoupon codes based on successful activation, and for automaticallyapplying stored coupon codes for subsequent purchases, according to oneembodiment.

FIG. 2 is a flowchart depicting a method for automatically storingcoupon codes based on successful activation, according to oneembodiment.

FIG. 3 is a flowchart depicting a method for automatically applying astored coupon code on a subsequent purchase, according to oneembodiment.

DETAILED DESCRIPTION

The various concepts, architectures, methods, and modes of operationdescribed herein are intended as illustrative examples that can beimplemented singly or in any suitable combination with one another. Somemay be omitted and others included, as suitable for various embodiments.Accordingly, the following description and accompanying Figures merelyset forth a subset of the possible embodiments, and are not intended tolimit scope.

System Architecture

According to various embodiments, the system can be implemented on anyelectronic device or devices equipped to receive, store, and presentinformation. Such electronic devices may include, for example, desktopcomputers, laptop computers, smartphones, tablet computers, smartwatches, wearable devices, and/or the like.

Although the system is primarily described herein in connection with animplementation in a client/server context wherein the client is acomputer, one skilled in the art will recognize that the techniquesdescribed herein can be implemented in other contexts, and indeed in anysuitable device capable of receiving and/or processing user input,and/or communicating with other components over an electronic network.Accordingly, the following description is intended to illustrate variousembodiments by way of example, rather than to limit scope.

Referring now to FIG. 1, there is shown a block diagram depicting asystem 100 for automatically storing coupon codes based on successfulactivation, and for automatically applying stored coupon codes forsubsequent purchases, according to one embodiment. As shown in FIG. 1,in at least one embodiment, the system is implemented in a client/serverenvironment wherein at least one web server 110 receives and responds torequests from client device 102.

Client device 102 may be any electronic device equipped to receive,store, and/or present information, and to receive user input in connectwith such information, such as a desktop computer, laptop computer,personal digital assistant (PDA), cellular telephone, smartphone, musicplayer, handheld computer, tablet computer, kiosk, game system, smartwatch, wearable device, or the like.

In at least one embodiment, client device 102 includes a number ofhardware components well known to those skilled in the art.

Input device(s) 103 can be any element or elements capable of receivinginput from user 101, including, for example, a keyboard, mouse, stylus,touch-sensitive screen (touchscreen), touchpad, trackball,accelerometer, five-way switch, microphone, or the like. Input can beprovided via any suitable mode, including for example, one or more of:pointing, tapping, typing, dragging, and/or speech.

Processor 106 can be a conventional microprocessor for performingoperations on data under the direction of software, according towell-known techniques.

Memory 105 can be random-access memory, having a structure andarchitecture as are known in the art, for use by processor 106 in thecourse of running software.

Browser 107 is an example of a software application that can be used byuser 101 to access and interact with websites over communicationsnetwork 113. In at least one embodiment, user 101 uses browser 107 toview and interact with e-commerce websites 109 operated by web servers110. Such interaction can include, for example, clicking on links toview items, placing items in a shopping cart, and/or the like. In otherembodiments, any suitable app (software application) or other componentcan be used in place of browser 107.

In at least one embodiment, as described in more detail below, plug-in108 automatically detects entry of coupon codes, either by user 101 orautomatically, and monitors success or failure of such coupons inconnection with e-commerce transactions. In other embodiments, plug-in108 can be omitted, and the functionality described herein andassociated with plug-in 108 can instead be performed by browser 107itself, or any app (software application) or other component of clientdevice 102.

Display screen 104 can be any element that graphically displaysinformation such as items presented by browser 107, user interfaceelements, and/or the like. Such output may include, for example,descriptions and images depicting items that user 101 may be interestedin purchasing, indications of coupons and discounts, navigationalelements, search results, graphical elements, prompts, windows, buttons,forms, and/or the like. In at least one embodiment where only some ofthe desired output is presented at a time, a dynamic control, such as ascrolling mechanism, may be available via input device 103 to changewhich information is currently displayed, and/or to alter the manner inwhich the information is displayed.

In at least one embodiment, the information displayed on display screen104 may include data in text and/or graphical form.

Data store 111 can be any magnetic, optical, or electronic storagedevice for data in digital form; examples include flash memory, magnetichard drive, CD-ROM, DVD-ROM, thumbdrive, or the like. Data store 111 maybe fixed or removable.

In at least one embodiment, device 102 can include additionalcomponents. For example, a camera 114 can be included, as is well knownfor devices such as smartphones.

Additional input mechanisms, sensors, and/or devices can also beincluded in device 102, such as a speaker (for voice commands),accelerometer (to detect shaking and changes in position ororientation), GPS sensor (to detect location), and/or the like.

As mentioned above, FIG. 1 depicts an example of a system implementationin a client/server environment. An example of such a client/serverenvironment is a web-based implementation, wherein client device 102runs browser 107 that provides a user interface for interacting withe-commerce web pages 109 and/or other web-based resources. Plug-in 108also monitors coupon usage, determines success or failure of attemptedcoupon use, and stores information about valid coupons in coupondatabase 118, which may be in local or remote data storage.

Information, images, and/or text from e-commerce websites 109 can bepresented as part of such web pages and/or other web-based resources,using known protocols and languages such as Hypertext Markup Language(HTML), Java, JavaScript, and the like. Alternatively, such information,images, and/or text from e-commerce websites 109 can be presented in asoftware application (app) or other component running on client device102.

In at least one embodiment, plug-in 108 or other software applicationruns in the background no matter what browser or application user 101 isrunning. The background application can thereby see all traffic, and inparticular can alert user 101 to savings, and/or can automaticallypresent and/or apply coupons to items of interest to user 101.

Any suitable type of communications network 113, such as the Internet,can be used as the mechanism for transmitting data among components suchas client device 102, web server(s) 110, e-commerce website(s) 109, andcoupon database 118, according to any suitable protocols and techniques.In addition to the Internet, other examples include cellular telephonenetworks, EDGE, 3G, 4G, long term evolution (LTE), Session InitiationProtocol (SIP), Short Message Peer-to-Peer protocol (SMPP), SS7, Wi-Fi,Bluetooth, ZigBee, Hypertext Transfer Protocol (HTTP), Secure HypertextTransfer Protocol (SHTTP), Transmission Control Protocol/InternetProtocol (TCP/IP), and/or the like, and/or any combination thereof.Communications network 113 can be wired or wireless, or any combinationthereof. Communications across network 113 can be encrypted orunencrypted. In at least one embodiment, client device 102 transmitsrequests for data via communications network 113, and receives responsesfrom servers 110 and/or websites 109 containing the requested data.

In at least one embodiment, some components of system 100 can beimplemented as software written in any suitable computer programminglanguage. Alternatively, such components may be implemented and/orembedded in hardware.

Method

The described techniques can be used in connection with a universalelectronic shopping cart, as described in above-referenced U.S. Utilityapplication Ser. No. 14/933,173, as well as in connection withtechniques for automated testing of multiple online coupons, asdescribed in above-referenced U.S. Utility application Ser. No.15/677,951. Alternatively, the described techniques can be implementedin other contexts.

In at least one embodiment, the described steps can be performed byclient-side plug-in 108. Alternatively, they can be performed by nativefunctionality of browser 107, or by a server such as one of web servers110. Coupon database 118, containing information about valid coupons,can be implemented locally or remotely with respect to client device102. In at least one embodiment, coupon database 118 can be accessed byother client devices as well.

Storing Coupons Based on Successful Activation

Referring now to FIG. 2, there is shown a flowchart depicting a methodfor automatically storing coupon codes based on successful activation,according to one embodiment. Although described herein in terms oftangible goods, the system and method can be implemented for any type ofonline purchases, including for example services, travel, event tickets,media and entertainment content, and/or the like.

In at least one embodiment, the method depicted in FIG. 2 can beperformed using the architecture depicted in FIG. 1. However, oneskilled in the art will recognize that the method can be performed usingother architectures and arrangements.

In at least one embodiment, the described method is performed inconnection with e-commerce shopping.

The method begins 200. User 101 accesses 201 an e-commerce website 109,for example via browser 107 or via an app running on device 102. User101 shops 202 normally at website 109, and places 203 items in ashopping cart. The shopping cart may be a cart for an e-commerce website109 or may be a universal shopping cart as described in theabove-referenced U.S. Utility Application.

Once the items have been placed in the cart, user 101 can apply couponsby entering coupon codes, scanning QR codes, or providing other input.Alternatively, in at least one embodiment, the system can automaticallyfind and apply coupons that are applicable to the products that user 101is purchasing, for example using techniques described in the above-citedrelated applications.

User 101 then indicates 204 that he or she wishes to check out,according to known techniques.

While user 101 is completing the checkout process, plug-in 108 (or someother component) monitors requests and page data to determine 205whether user 101 has attempted to apply any coupons to the purchase, andto determine whether the application of the coupon was a success orfailure. In at least one embodiment, step 205 is performed by plug-in108 monitoring communications sent from web server 110 to client device102 in response to an attempt to apply a coupon, and determining whetherthe response from web server 110 indicates successful application of thecoupon.

If plug-in 108 determines 206 that the coupon is valid (and/or thatapplication of the coupon is successful in connection with thepurchase), it causes information about the coupon to be stored 207 indatabase 118. Such information can include, for example, a coupon code,time and date, particulars of the item being purchased, cart total,geographic location, and/or the like. In at least one embodiment, step207 is performed by sending the coupon information to a server (notshown), which stores the coupon information in a data store thatincludes database 118. In other embodiments, the data can be storedlocally or in some other location.

In at least one embodiment, statistics regarding usage of the couponcode, and its success and/or failure rate, are also stored in database118.

In at least one embodiment, a user identifier is stored in database 118,which can be used to reference a user data table containing informationabout the user, such as his or her location, demographic information,and/or the like. The user identifier can also be used to de-duplicatesubmissions.

In at least one embodiment, if no record for a particular coupon existsin the database when step 207 is performed, a new record is created andusage statistics are stored in the new record. If a record for thecoupon already exists when step 207 is performed, the existing record isupdated to reflect new statistics for the coupon.

In step 208, plug-in 108 determines whether any more attempts have beenmade to apply coupons to the current purchase. If so, plug-in 108returns to step 205. Otherwise, the method ends 299.

In at least one embodiment, steps 205 through 208 are performedautomatically, without user 101 activating the method or taking anyparticular action, or they can be performed in response to user 101action such as hitting a button or activating an on-screen control causea coupon to be stored.

In at least one embodiment, coupon data stored in database 118 can bemade available to other client devices 102. Thus, information about avalid and/or successfully applied coupon can be made availableautomatically when other users attempt purchases at the same website orother related websites, and when it is determined that the coupons canbe applied to such purchases.

In at least one embodiment, the depicted method can be optionallycombined with automatic coupon testing, such as described in theabove-referenced related applications. For example, coupon data can beautomatically retrieved from coupon database 118 when a purchase is madeor when a user browses a web page, as depicted in FIG. 3.

Referring now to FIG. 3, there is shown a flowchart depicting a methodfor automatically applying a stored coupon code on a subsequentpurchase, according to one embodiment. The method of FIG. 3 can be usedto automatically apply coupons that were stored in database 118 duringpurchases by the same user 101 or a different user.

The method begins 300. Steps 201 through 203 are performed as describedabove in connection with FIG. 2. In step 304, plug-in 108 automaticallyobtains potential coupons from database 118, based on the item(s) in theshopping cart. In at least one embodiment, this is done by retrievingcoupons applicable to the e-commerce website 109 being accessed, andrunning those coupons through a scoring algorithm that considers factorssuch as the last time the coupon was successful, the success rate, andthe number of attempts. The algorithm takes into account what specificitems are in user's 101 shopping cart, based on any or all of specificitem SKU, brand, model, the seller of the item, and/or the price of theitem. In at least one embodiment, a model is applied that takes intoconsideration which coupons work with which items and thereby predictswhether a coupon will work for a particular item. Notably, couponsretrieved from database 118 in step 304 may include coupons that werepreviously stored by the same client device 102 in connection withpurchases made by the same user 101, and/or coupons stored by otherclient device(s) in connection with purchases made by other users.

Plug-in 108 then automatically determines 305 query parameters or postparameters to test each individual potential coupon for the e-commercewebsite 109 being accessed. The query parameters are then used to send306 requests to web server 110 for the e-commerce website 109 at whichuser 101 is shopping, so as to test each potential coupon. In at leastone embodiment, this includes repeatedly and automatically rewriting anetwork request to web server 110 to test each specific coupon, with acoupon parameter being swapped out to match the particular coupon beingtested. In at least one embodiment, multiple coupon requests are runsequentially. Alternatively, they can be run in parallel with oneanother.

Web server 110 responds 307 with an indicator of validity or invalidityfor each tested coupon, and, for each valid coupon, an indicator of howmuch would be saved by using the coupon. Once such responses arereceived, plug-in 108 automatically reviews 308 the responses todetermine which coupons worked and how much discount is available usingeach coupon. In some cases, multiple coupons may apply; accordingly,plug-in 108 can be configured to automatically test various combinationsof coupons in parallel. Based on this analysis, plug-in 108 selects 309a coupon or combination of coupons.

The web page from website 109 is then automatically updated 310, forexample, by performing a refresh or by running a JavaScript command tocause browser 107 to redraw the webpage to indicate any coupon orcoupons that worked. In at least one embodiment, the working coupon(s)is/are automatically applied. User 101 can then check out 311 andthereby purchase the item(s) using the applied coupon(s). Alternatively,user 101 can perform other actions, such as deleting or modifyingautomatically selected coupons, removing or adding to items in the cart,canceling the transaction, and/or the like. In at least one embodiment,the working coupon(s) is/are automatically applied and the purchase isautomatically completed, without the need for user 101 to manually checkout.

In at least one embodiment, the described steps are performed withrespect to a plurality of items in user's 101 shopping cart. Byconsidering the plurality of items, rather than individual itemsseparately, the system is able to take into account, for example,minimum purchase requirements for coupons and/or other factors that mayaffect validity or applicability of coupons to the items of interest touser 101.

In at least one embodiment, the system operates in a manner that doesnot require any intervention by user 101, and does not require that user101 know coupon codes, URL's for coupon websites, or any otherinformation about potential coupons. In this manner, the system runsbehind the scenes, via plug-in 108 (or other component) and usingnetwork requests, so as to automatically seek out and apply valid,working coupons without interfering with user's 101 behavior, andwithout interfering with display of the e-commerce web page as couponsare being tested.

In at least one embodiment, as described above, the system can beimplemented using client-side plug-in 108. Alternatively, it can beimplemented using a browser 107 extension, or native functionality ofclient device 102. Alternatively, it can be implemented server-side, forexample by passing user's 101 cookie to a server and running requestswithout the use of browser 107.

In an alternative embodiment, previously stored coupons can be testedwhile user 101 is browsing a product page, before he or she places itemsin the cart. Techniques for performing such testing are described in theabove-cited U.S. Utility application Ser. No. 15/677,951.

The present system and method have been described in particular detailwith respect to possible embodiments. Those of skill in the art willappreciate that the system and method may be practiced in otherembodiments. First, the particular naming of the components,capitalization of terms, the attributes, data structures, or any otherprogramming or structural aspect is not mandatory or significant, andthe mechanisms and/or features may have different names, formats, orprotocols. Further, the system may be implemented via a combination ofhardware and software, or entirely in hardware elements, or entirely insoftware elements. Also, the particular division of functionalitybetween the various system components described herein is merelyexemplary, and not mandatory; functions performed by a single systemcomponent may instead be performed by multiple components, and functionsperformed by multiple components may instead be performed by a singlecomponent.

Reference in the specification to “one embodiment” or to “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiments is included in at least oneembodiment. The appearances of the phrases “in at least one embodiment”or “in at least one embodiment” in various places in the specificationare not necessarily all referring to the same embodiment.

Various embodiments may include any number of systems and/or methods forperforming the above-described techniques, either singly or in anycombination. Another embodiment includes a computer program productcomprising a non-transitory computer-readable storage medium andcomputer program code, encoded on the medium, for causing a processor ina computing device or other electronic device to perform theabove-described techniques.

Some portions of the above are presented in terms of algorithms andsymbolic representations of operations on data bits within the memory ofa computing device. These algorithmic descriptions and representationsare the means used by those skilled in the data processing arts to mosteffectively convey the substance of their work to others skilled in theart. An algorithm is here, and generally, conceived to be aself-consistent sequence of steps (instructions) leading to a desiredresult. The steps are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical, magnetic or optical signals capable of being stored,transferred, combined, compared and otherwise manipulated. It isconvenient at times, principally for reasons of common usage, to referto these signals as bits, values, elements, symbols, characters, terms,numbers, or the like. Furthermore, it is also convenient at times, torefer to certain arrangements of steps requiring physical manipulationsof physical quantities as modules or code devices, without loss ofgenerality.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the following discussion,it is appreciated that throughout the description, discussions utilizingterms such as “processing” or “computing” or “calculating” or“displaying” or “determining” or the like, refer to the action andprocesses of a computer system, or similar electronic computing moduleand/or device, that manipulates and transforms data represented asphysical (electronic) quantities within the computer system memories orregisters or other such information storage, transmission or displaydevices.

Certain aspects include process steps and instructions described hereinin the form of an algorithm. It should be noted that the process stepsand instructions can be embodied in software, firmware and/or hardware,and when embodied in software, can be downloaded to reside on and beoperated from different platforms used by a variety of operatingsystems.

The present document also relates to an apparatus for performing theoperations herein. This apparatus may be specially constructed for therequired purposes, or it may comprise a general-purpose computing deviceselectively activated or reconfigured by a computer program stored inthe computing device. Such a computer program may be stored in acomputer readable storage medium, such as, but is not limited to, anytype of disk including floppy disks, optical disks, CD-ROMs, DVD-ROMs,magnetic-optical disks, read-only memories (ROMs), random accessmemories (RAMs), EPROMs, EEPROMs, flash memory, solid state drives,magnetic or optical cards, application specific integrated circuits(ASICs), or any type of media suitable for storing electronicinstructions, and each coupled to a computer system bus. The program andits associated data may also be hosted and run remotely, for example ona server. Further, the computing devices referred to herein may includea single processor or may be architectures employing multiple processordesigns for increased computing capability.

The algorithms and displays presented herein are not inherently relatedto any particular computing device, virtualized system, or otherapparatus. Various general-purpose systems may also be used withprograms in accordance with the teachings herein, or it may proveconvenient to construct more specialized apparatus to perform therequired method steps. The required structure for a variety of thesesystems will be apparent from the description provided herein. Inaddition, the system and method are not described with reference to anyparticular programming language. It will be appreciated that a varietyof programming languages may be used to implement the teachingsdescribed herein, and any references above to specific languages areprovided for disclosure of enablement and best mode.

Accordingly, various embodiments include software, hardware, and/orother elements for controlling a computer system, computing device, orother electronic device, or any combination or plurality thereof. Suchan electronic device can include, for example, a processor, an inputdevice (such as a keyboard, mouse, touchpad, track pad, joystick,trackball, microphone, and/or any combination thereof), an output device(such as a screen, speaker, and/or the like), memory, long-term storage(such as magnetic storage, optical storage, and/or the like), and/ornetwork connectivity, according to techniques that are well known in theart. Such an electronic device may be portable or non-portable. Examplesof electronic devices that may be used for implementing the describedsystem and method include: a desktop computer, laptop computer,television, smartphone, tablet, music player, audio device, kiosk,set-top box, game system, wearable device, consumer electronic device,server computer, and/or the like. An electronic device may use anyoperating system such as, for example and without limitation: Linux;Microsoft Windows, available from Microsoft Corporation of Redmond,Wash.; Mac OS X, available from Apple Inc. of Cupertino, Calif.; iOS,available from Apple Inc. of Cupertino, Calif.; Android, available fromGoogle, Inc. of Mountain View, Calif.; and/or any other operating systemthat is adapted for use on the device.

While a limited number of embodiments have been described herein, thoseskilled in the art, having benefit of the above description, willappreciate that other embodiments may be devised. In addition, it shouldbe noted that the language used in the specification has beenprincipally selected for readability and instructional purposes, and maynot have been selected to delineate or circumscribe the subject matter.Accordingly, the disclosure is intended to be illustrative, but notlimiting, of scope.

1.-48. (canceled)
 49. A computer-implemented method, comprising:receiving, in a first online session on a client device associated witha user, user input indicating user interest in an item offered by anonline merchant; automatically retrieving, from a data store, at leastone potential online coupon for the item by: retrieving, from the datastore, coupons applicable to an e-commerce website corresponding to theonline merchant, wherein the coupons are stored in the data store as aresult of monitoring of at least one second online session prior to thefirst online session during which the coupons were stored in the datastore in response to a determination that the coupons were valid inconnection with at least one purchase with the online merchant, andprocessing the coupons through a scoring algorithm to obtain the atleast one potential online coupon by applying a model to predict whethera particular coupon, of the coupons, will work for the item, based onwhich coupons work with which items, and considering factors for a timethe particular coupon was successful, a success rate for the particularcoupon, and a number of attempts for applying the particular coupon; andautomatically applying the at least one potential online coupon to anonline shopping cart.
 50. The computer-implemented method of claim 49,wherein the coupons retrieved from the data store include: previouslystored coupons that were previously stored by the client device inconnection with purchases made by the user, and/or other coupons storedby other client device(s) in connection with purchases made by otherusers.
 51. The computer-implemented method of claim 49, whereinautomatically applying the at least one potential online coupon to theonline shopping cart includes: repeatedly and automatically rewritingnetwork request(s), to test each of the at least one potential onlinecoupon, by swapping out a coupon parameter to match a particular couponbeing tested; receiving responses to the network request(s), theresponses including an indicator of validity or invalidity for eachparticular coupon, and, for each valid coupon, an indicator of how muchwould be saved by using each valid coupon; selecting a valid couponbased on the responses; and automatically applying the valid coupon thatwas selected.
 52. The computer-implemented method of claim 49, whereinthe data store includes a coupon identifier for each of the coupons. 53.The computer-implemented method of claim 49, wherein the data storeincludes a record comprising data describing use of the coupons.
 54. Thecomputer-implemented method of claim 53, wherein the data describing theuse of the coupons comprises at least one selected from a groupconsisting of: a date on which one or more of the coupons were used; atime at which the one or more of the coupons were used; an e-commercesite at which the one or more of the coupons were used; a product beingpurchased when the one or more of the coupons were used; a total dollaramount of purchases on which the one or more of the coupons were used;shipping information for the purchases on which the one or more of thecoupons were used; and a geographic area in which the one or more of thecoupons were used.
 55. The computer-implemented method of claim 54,wherein the data describing the use of the coupons comprises at leastone of a success rate or a failure rate for the one or more of thecoupons.
 56. The computer-implemented method of claim 49, furthercomprising, during the at least one second online session: monitoringthe at least one second online session in connection with the onlinemerchant; detecting an attempt to apply a coupon in connection with apurchase of at least one item by monitoring requests and page data;determining whether the coupon is valid in connection with the purchaseby determining whether a response from a web server indicates successfulapplication of the coupon; and responsive to a determination that thecoupon is valid in connection with the purchase, storing coupon data forthe coupon in the data store.
 57. The computer-implemented method ofclaim 56, wherein the coupon data includes, for the purchase using thecoupon, one or more of a coupon code, time and date of the purchase,particulars of item(s) being purchased, a cart total, or geographiclocation.
 58. The computer-implemented method of claim 49, wherein thedata store is located on one or more of the client device or on aserver.
 59. A system, comprising: at least one memory storinginstructions; and at least one processor executing the instructions toperform operations, the operations including: receiving, in a firstonline session on a client device associated with a user, user inputindicating user interest in an item offered by an online merchant;automatically retrieving, from a data store, at least one potentialonline coupon for the item by: retrieving, from the data store, couponsapplicable to an ecommerce website corresponding to the online merchant,wherein the coupons are stored in the data store as a result ofmonitoring of at least one second online session prior to the firstonline session during which the coupons were stored in the data store inresponse to a determination that the coupons were valid in connectionwith at least one purchase with the online merchant, and processing thecoupons through a scoring algorithm to obtain the at least one potentialonline coupon by applying a model to predict whether a particularcoupon, of the coupons, will work for the item, based on which couponswork with which items, and considering factors for a time the particularcoupon was successful, a success rate for the particular coupon, and anumber of attempts for applying the particular coupon; and automaticallyapplying the at least one potential online coupon to an online shoppingcart.
 60. The system of claim 59, wherein the coupons retrieved from thedata store include: previously stored coupons that were previouslystored by the client device in connection with purchases made by theuser, and/or other coupons stored by other client device(s) inconnection with purchases made by other users.
 61. The system of claim59, wherein automatically applying the at least one potential onlinecoupon to the online shopping cart includes: repeatedly andautomatically rewriting network request(s), to test each of the at leastone potential online coupon, by swapping out a coupon parameter to matcha particular coupon being tested; receiving responses to the networkrequest(s), the responses including an indicator of validity orinvalidity for each particular coupon, and, for each valid coupon, anindicator of how much would be saved by using each valid coupon;selecting a valid coupon based on the responses; and automaticallyapplying the valid coupon that was selected.
 62. The system of claim 59,wherein the data store includes a coupon identifier for each of thecoupons.
 63. The system of claim 59, wherein the data store includes arecord comprising data describing use of the coupons.
 64. The system ofclaim 63, wherein the data describing the use of the coupons comprisesat least one selected from a group consisting of: a date on which thecoupons were used; a time at which the coupons were used; an e-commercesite at which the coupons were used; a product being purchased when thecoupons were used; a total dollar amount of purchases on which thecoupons were used; shipping information for the purchases on which thecoupons were used; and a geographic area in which the coupons were used.65. The system of claim 64, wherein the data describing the use of thecoupons comprises at least one of a success rate or a failure rate forthe coupons.
 66. The system of claim 59, wherein the operations furtherinclude, during the at least one second online session: monitoring theat least one second online session in connection with the onlinemerchant; detecting an attempt to apply a coupon in connection with apurchase of at least one item by monitoring requests and page data;determining whether the coupon is valid in connection with the purchaseby determining whether a response from a web server indicates successfulapplication of the coupon; and responsive to a determination that thecoupon is valid in connection with the purchase, storing coupon data forthe coupon in the data store.
 67. The system of claim 59, wherein thedata store is located on one or more of the client device or on aserver.
 68. A non-transitory computer-readable medium may storeinstructions that, when executed by a processor, cause the processor toperform a method, the method comprising: receiving user input indicatinguser interest in an item offered by an online merchant; automaticallyretrieving, from a data store, at least one potential online coupon forthe item by: retrieving, from the data store, coupon information for aplurality of coupons applicable to an e-commerce website correspondingto the online merchant, the coupon information including the pluralityof coupons and statistics for previous usage of the plurality ofcoupons, and processing the plurality of coupons and the statistics forprevious usage of the plurality of coupons through a scoring algorithmto obtain the at least one potential online coupon by applying a modelto predict whether a particular coupon, of the plurality of coupons,will work for the item, based on which coupons work with which items,and considering factors for a time the particular coupon was successful,a success rate for the particular coupon, and a number of attempts forapplying the particular coupon; and automatically applying the at leastone potential online coupon to an online shopping cart.